﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AutomationTools.Procedimentos.Exceptions
{
    /// <summary>
    /// Representa um erro no parametro de entrada do procedimento.
    /// </summary>
    [Serializable]
    public class ParametroException : System.Exception
    {
        public ParametroException(Type tipoEsperado, Type tipoEncontrado)
            : base(string.Format("O procedimento executado espera um parametro do tipo '{0}' mas encontrou o tipo '{1}'.", tipoEsperado.FullName, tipoEncontrado.FullName)) { }

        public ParametroException(string membro, Type tipoEsperado, Type tipoEncontrado)
            : base(string.Format("O procedimento executado espera o parametro '{0}' do tipo '{1}' mas encontrou o tipo '{2}'.", membro, tipoEsperado.FullName, tipoEncontrado.FullName)) { }

        public ParametroException(string membro, Type tipo)
            : base(string.Format("O procedimento executado espera uma propriedade '{0}' do tipo '{1}' que não foi encontrada.", membro, tipo.FullName)) { }

        protected ParametroException(
          System.Runtime.Serialization.SerializationInfo info,
          System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }
    }
}
